package com.dys.testio10;

import java.io.*;

/**
 * @className: src.main.java.com.dys.testio10.ObjectInputStreamTest
 * @description: src.main.java.com.dys.testio10
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/17 上午12:17
 */
public class ObjectInputStreamTest {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) throws Exception {
        new ObjectInputStreamTest().readObject();
    }

    /**
     * 序列化: 被序列化的类的内部的所有属性，必须是可序列化的
     * static，transient修饰的属性 不可以被序列化。
     *
     * @throws Exception
     */
    public void testWriteObject() throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("e:\\Demo6.txt")));
        Student stu = new Student();
        stu.setName("张三");
        stu.setAge(22);
        oos.writeObject(stu);
        oos.close();
    }

    /**
     * 反序列化
     *
     * @throws Exception
     */
    public void readObject() throws Exception {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("e:\\Demo6.txt")));
        Student student = (Student) ois.readObject();
        System.out.println(student);
        ois.close();
    }
}
